A Formal Model of Program Dependences and Its Implications for Software Testing, Debugging, and Maintenance
نویسندگان
چکیده
A formal, general model of program dependences is presented and used to evaluate several dependence-based software testing, debugging, and maintenance techniques. Two generalizations of control and data flow dependence, called weak and strong syntactic dependence, are introduced and related to a concept called semantic dependence. Semantic dependence models the ability of a program statement to affect the execution behavior of other statements. It is shown, among other things, that weak syntactic dependence is a necessary but not sufficient condit ion for semantic dependence and that strong syntactic dependence is a necessary but not sufficient condit ion for a restricted form of semantic dependence that is finitely demonstrated. These results are then used to support some proposed uses of program dependences, to controvert others, and to suggest new uses.
منابع مشابه
Program dependence analysis of concurrent logic programs and its applications
In this paper a formal model for program dependence analysis of concurrent logic programs is proposed with the following contributions. First, two languageindependent program representations are presented for explicitly representing control ows and/or data ows in a concurrent logic program. Then based on these representations, program dependences between literals in concurrent logic programs ar...
متن کاملIncremental Slicing Based on Data-Dependences Types
Program slicing is useful for assisting with software-maintenance tasks, such as program understanding, debugging, impact analysis, and regression testing. The presence and frequent usage of pointers, in languages such as C, causes complex data dependences. To function effectively on such programs, slicing techniques must account for pointerinduced data dependences. Although many existing slici...
متن کاملApplying Program Dependence Analysis to Java Software
Understanding program dependences is essential for many software engineering activities including program slicing, testing, debugging, reverse engineering, maintenance, and complexity measurement. This paper presents the software dependence graph for Java (JSDG), which extends previous dependence-based representations, to represent various types of program dependences in Java software. The JSDG...
متن کاملStatic Interprocedural Slicing of Shared Memory Parallel Programs
Software tools for program debugging, software testing, software maintenance, and program understanding have all effectively utilized static program slicing techniques. In this paper, we present an approach to extend this capability to explicitly parallel shared memory programs written using the OpenMP standard. In particular, interprocedural static program slicing of OpenMP programs is enabled...
متن کاملAn optimal algorithm for the construction of the system dependence graph
Program slicing can be used to aid in a variety of software maintenance activities including code understanding, code testing, debugging, and program reengineering. Program slicing (as well as other program analysis functions including forward slicing) can be efficiently performed on an internal program representation called a system dependence graph (SDG). The construction of the SDG depends p...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
- IEEE Trans. Software Eng.
دوره 16 شماره
صفحات -
تاریخ انتشار 1990